Dart 重要概念

2023/5/11

# Dart 重要概念

当你在学习 Dart 语言时,应该牢记以下几点:

  • 所有变量引用的都是对象,每个对象都是一个 的实例。数字、函数以及 null 都是对象。除去 null 以外(如果你开启了空安全),所有的类都继承于 Object 类。
  • 尽管 Dart 是强类型语言,但是在声明变量时指定类型是可选的,因为 Dart 可以进行类型推断。
  • 如果你开启了空安全,变量在未声明为可空类型时不能为 null。你可以通过在类型后加上问好(?)将类型声明为可空。例如,int? 类型的变量可以是整型数字或 null。如果你 明确知道 一个表达式不会为空,但 Dart 不这么认为时,你可以在表达式后添加 ! 来断言表达式不为空(为空时将抛出异常)。例如:int x = nullableButNotNullInt!
  • 如果你想要显式地声明允许任意类型,使用 Object?(如果你开启了空安全)、Object 或者特殊类型 daynamic 将检查延迟到运行时进行。
  • Dart 支持泛型,比如 List<int> (表示一组由 int 对象组成的列表)或 List<Object> (表示一组由任何类型对象组成的列表)。
  • Dart 支持顶级函数(例如 main 方法),同时还支持定义属于类或对象的函数(即静态和实例方法)。你还可以在函数中定义函数(嵌套或局部函数)。
  • Dart 支持顶级变量,以及定义属于类或对象的变量(静态和实例变量)。
  • Dart 没有类似于 Java 那样的 public、protected 和 private 成员访问限定符。如果一个标识符以下划线(_)开头则表示该标识符在库内是私有的。
  • 标识符可以以字母或者下划线(_)开头,其后可跟字符和数字的组合。
  • Dart 中表达式和语句是有区别的,表达式有值而语句没有。比如条件表达式 expression condition ? expr1 : expr2 中含有 expr1 和 expr2。与 if-else 分支语句相比,if-else 分支语句则没有值。一个语句通常包含一个或多个表达式,但是一个表达式不能只包含一个语句。
  • Dart 工具可以显示 警告错误 两种类型的问题。警告表明代码可能有问题但不会阻止其运行。错误分为编译时错误和运行时错误;编译时错误代码无法运行;运行时代码会在代码运行时导致异常。